import axios from 'axios'
import router from '@/router/index'
import store from '@/store'

//export表示导出的是function类型的
export default function request(config) {

    // 创建axios的实例
    const instance = axios.create({
        // baseURL: process.env.VUE_APP_Address,//这里的意思是从环境变量中获取信息
        baseURL: 'http://localhost:8090/',
        //5秒超时
        timeout: 5000,
    })

    //配置

    //请求拦截
    instance.interceptors.request.use(config => {
        //设置Token
        let publicAccess = ['users/login', 'users/register']
        //无需设置token的请求接口
        if (publicAccess.indexOf(config.url) === -1 && window.localStorage.token !== null) {
            //添加Token
            config.headers.Authorization = store.state.token
        }
        return config
    }, err => {
        //请求错误处理
        alert('向服务器请求出错！')
    })

    //响应拦截
    instance.interceptors.response.use(res => {
        //状态码判断
        if (res.status === 200) {
            //成功
            return res.data
        } else {
            //失败
            alert('服务正在升级，请稍后再试！')
        }
    }, err => {
        router.push({ path: '/login' })
        //返回错误响应，防止系统崩溃
        return { code: -1, data: null, msg: "与服务器连接丢失！" + err }
    })

    return instance(config)
}